//给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ，返回 true ；如果数组中每个元素互不相同，返回 false 。
//
// 
//
// 示例 1： 
//
// 
// 输入：nums = [1,2,3,1] 
// 
//
// 输出：true 
//
// 解释： 
//
// 元素 1 在下标 0 和 3 出现。 
//
// 示例 2： 
//
// 
// 输入：nums = [1,2,3,4] 
// 
//
// 输出：false 
//
// 解释： 
//
// 所有元素都不同。 
//
// 示例 3： 
//
// 
// 输入：nums = [1,1,1,3,3,4,3,2,4,2] 
// 
//
// 输出：true 
//
// 
//
// 提示： 
//
// 
// 1 <= nums.length <= 10⁵ 
// -10⁹ <= nums[i] <= 10⁹ 
// 
//
// Related Topics 数组 哈希表 排序 👍 1140 👎 0


//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public boolean containsDuplicate(int[] nums) {
    //1.
//        HashMap<Integer,Integer> map = new HashMap<>();
//        for(int i= 0; i <nums.length; i++){
//            if(map.containsKey(nums[i]))
//                return true;
//            else
//                map.put(nums[i], 1);
//        }
//        return false;
        //2.
//        HashSet<Integer> set = new HashSet<>();
//        for (int num : nums) {
//            if(!set.add(num))
//                return true;
//        }
//        return false;
        //3.
        HashMap<Integer, Object> map = new HashMap<>(nums.length*2);
        Object value = new Object();
        for (int num : nums) {
            if(map.put(num, value)!=null)//put的返回值是之前对应的value（如果之前是没有数据，则返回NULL）
                return true;
        }
        return false;

    }
}
//leetcode submit region end(Prohibit modification and deletion)
